package com.zhr.listener;

import java.util.HashSet;
import java.util.Set;

import com.zhr.server.WeixinRequest;
import com.zhr.server.WeixinResponse;

public class MessageListenerContainer {

	private Set<MessageListener> messageListeners = new HashSet<MessageListener>();

	public WeixinResponse execute(WeixinRequest request) {
		for (MessageListener messageListener : messageListeners) {
			// msg type will be not duplicated
			if (messageListener.getMsgType().name()
					.equals(request.getMsgType())) {
				System.out.println("listener : " + messageListener.getClass());
				return messageListener.execute(request);
			}
		}
		return null;
	}

	public void registListener(MessageListener messageListener) {
		this.messageListeners.add(messageListener);
	}

	public void registListeners(MessageListener... messageListeners) {
		for (MessageListener messageListener : messageListeners) {
			this.messageListeners.add(messageListener);
		}
	}

	public void unRegistListener(MessageListener messageListener) {
		this.messageListeners.remove(messageListener);
	}

	public void unRegistListeners(MessageListener... messageListeners) {
		for (MessageListener messageListener : messageListeners) {
			this.messageListeners.remove(messageListener);
		}
	}

}
